小编典典

使用 jquery 进行 POST,如何正确提供 'data' 参数?

all

我想以 POST 的形式进行 ajax 调用,它将发送到我的 servlet。我想发送参数化数据,如下所示:

var mydata = 'param0=some_text&param1=some_more_text';

我将其作为我的 jquery ajax() 调用的“数据”参数提供。所以这应该插入到 POST 的正文中,对吧?(我的意思是,没有附加到我的 ‘mysite/save’ 网址?):

$.ajax({
    url: 'mysite/save',
    type: 'POST',
    data: mydata
});

它似乎工作正常。在我的 servlet 中,我只是转储了所有接收到的参数,并且我看到它们都很好地通过了:

private void printParams(HttpServletRequest req) {
    Enumeration paramNames = req.getParameterNames();
    while (paramNames.hasMoreElements()) { 
        // print each param key/val here.
    }
}

另外,我应该在使用前手动对我的数据字符串进行 url 编码,对吗?像:

var mydata = 'param0=' + urlencode('hi there!');
mydata += '&param1=' + urlencode('blah blah');
mydata += '%param2=' + urlencode('we get it');

谢谢!


阅读 334

收藏
2022-04-20

共1个答案

小编典典

一种更简单的方法是将data属性作为对象提供,如下所示:

$.ajax({
  url: 'mysite/save',
  type: 'POST',
  data: { param0:'hi there!', param1:'blah blah', param2:'we get it' }
});

否则,是的,您应该对其进行编码,因为任何带有&例如的东西都会很快搞砸。无论如何,在我看来,将它作为对象提供代表了一种更清晰/更简单的方法。

您还可以将其隔开并从其他内联位置检索属性,如下所示:

$.ajax({
  url: 'mysite/save',
  type: 'POST',
  data: { 
          param0: $('#textbox0').val(), 
          param1: $('#textbox1').val(), 
          param2: $('#textbox2').val()
        }
});

编辑:如果您对 jQuery 如何在内部进行这种编码感到好奇,它正在使用$.param()(您也可以直接使用)将对象编码为一个字符串

2022-04-20